"""
@author: xxw
@file: homework_使用装饰器.py
@time: 2023/6/13 16:53
"""

import pymysql
import redis

stu_id = input("请输入你需要查询的学生id:")

#连接redis
r = redis.Redis(host='192.168.116.129', port=6379, db=2, decode_responses=True)

# 连接mysql
db = pymysql.connect(host='192.168.116.129',
                     user='sc',
                     password='123456',
                     database='sc')

def querry_redis(func):
    def inner():
        if r.hkeys(stu_id):
            print("通过redis查找")
            print(f"学生姓名为:{r.hget(stu_id, 'name')}")
            print(f"学生年龄为:{r.hget(stu_id, 'age')}")
            print(f"学生地址为:{r.hget(stu_id, 'address')}")
        else:
            result = func()
            if result == 0:
                print("没有该学生信息")
            else:
                print("存入redis......")
                r.hset(stu_id, 'name', result[0])
                r.hset(stu_id, 'age', result[1])
                r.hset(stu_id, 'address', result[2])
    return inner

@querry_redis
def querry_mysql():
    print("通过mysql查询")
    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
    # 使用 execute()  方法执行 SQL 查询
    cursor.execute(f"select * from StuInfo where id={stu_id}")
    # 使用 fetchone() 方法获取数据.
    data = cursor.fetchone()
    if data:
        print(f"学生姓名为:{data[1]}")
        print(f"学生年龄为:{data[2]}")
        print(f"学生地址为:{data[3]}")
        return [data[1], data[2], data[3]]
    else:
        return 0

querry_mysql()



